package me.szlx.validation;

import java.util.function.Predicate;

/**
 * <p>约束条件。</p>
 */
public interface Conditional {
    /**
     * 对条件进行测试，如果条件满足则返回<code>true</code>，否则返回<code>false</code>。
     *
     * @return <code>true</code>，如果条件满足，否则返回<code>false</code>。
     */
    boolean apply();

    static <T> PredicativeConditional<T> newPredicative(Predicate<T> predicate) {
        return new PredicativeConditional(predicate, null);
    }

    static <T> PredicativeConditional<T> newPredicative(Predicate<T> predicate, T context) {
        Assert.notNull(predicate, "条件断言不能为null");
        return new PredicativeConditional(predicate, context);
    }
}
